package com.iotmonitor.iot.service;


import com.iotmonitor.iot.domain.TbQuota;
import com.iotmonitor.iot.domain.dto.DeviceInfoDTO;
import com.iotmonitor.iot.domain.dto.QuotaDTO;
import com.iotmonitor.iot.domain.dto.QuotaInfo;

import java.util.List;
import java.util.Map;

/**
 * 指标配置Service接口
 * 
 * @author ruoyi
 * @date 2023-08-11
 */
public interface ITbQuotaService 
{
    /**
     * 查询指标配置
     * 
     * @param id 指标配置主键
     * @return 指标配置
     */
    public TbQuota selectTbQuotaById(Long id);

    /**
     * 查询指标配置列表
     * 
     * @param tbQuota 指标配置
     * @return 指标配置集合
     */
    public List<TbQuota> selectTbQuotaList(TbQuota tbQuota);

    /**
     * 根据数值查询指标配置列表
     *
     * @param tbQuota 指标配置
     * @return 指标配置集合
     */
    List<TbQuota> queryNumberQuota(TbQuota tbQuota);

    /**
     * 新增指标配置
     * 
     * @param tbQuota 指标配置
     * @return 结果
     */
    public int insertTbQuota(TbQuota tbQuota);

    /**
     * 修改指标配置
     * 
     * @param tbQuota 指标配置
     * @return 结果
     */
    public int updateTbQuota(TbQuota tbQuota);

    /**
     * 批量删除指标配置
     * 
     * @param ids 需要删除的指标配置主键集合
     * @return 结果
     */
    public int deleteTbQuotaByIds(Long[] ids);

    /**
     * 删除指标配置信息
     * 
     * @param id 指标配置主键
     * @return 结果
     */
    public int deleteTbQuotaById(Long id);


    List<String> getAllSubject();


    /**
     * 指标分析
     * @param topic 主题
     * @param payloadMap 报文
     * @return
     */
    DeviceInfoDTO analysis(String topic, Map<String,Object> payloadMap);


    /**
     * 保存指标数据列表到oTdengine
     * @param quotaDTOList
     */
    void saveQuotaToTdengine(List<QuotaDTO> quotaDTOList);



    List<QuotaInfo> getLastQuotaList(String deviceId);

}
